﻿using EMoney.IStock.OAuth.Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace EMoney.IStock.OAuth.DataAccess
{
    public class OAuthDal
    {
        public string GetUserID(string openid, int userType, string version, string hardware, string nickname, 
            string figureurl, string tsid,string clientip,string qq,string os,string dn,out int returnValue, out string message)
        {
            returnValue = -99;
            message = string.Empty;

            SQLTools tools = new SQLTools();

            //tools.AddSqlParameter("p_AppID", System.Data.SqlDbType.VarChar, "");        //passport指定的appid, only log
            tools.AddSqlParameter("p_ppid", System.Data.SqlDbType.VarChar, openid);         //PassportID 或者qq的openid
            //tools.AddSqlParameter("p_account", System.Data.SqlDbType.VarChar, "");      //可以是user_name,手机号,email, qq 根据@p_AccountType标识
            tools.AddSqlParameter("p_AccountType", System.Data.SqlDbType.TinyInt, userType);  //账号类型 1:user_name; 2:手机号; 3:email; 4:qq号(暂无效);; 100:QQ登录; 101:sina微博
            tools.AddSqlParameter("p_client_type", System.Data.SqlDbType.TinyInt, "1");  //客户端类型 1:CLIENT_PC; 2:CLIENT_MOBILE
            //tools.AddSqlParameter("p_logintime", System.Data.SqlDbType.VarChar, "");    //登陆时间(暂时无效)
            tools.AddSqlParameter("p_client_ver", System.Data.SqlDbType.VarChar, version);   //客户端版本
            tools.AddSqlParameter("p_hardware", System.Data.SqlDbType.VarChar, hardware);     //客户端硬件信息
            tools.AddSqlParameter("p_ip", System.Data.SqlDbType.VarChar, clientip);           //客户端ip
            //tools.AddSqlParameter("p_rand", System.Data.SqlDbType.VarChar, "");         //服务端传入的随机数(暂时无效)
            tools.AddSqlParameter("p_tsid", System.Data.SqlDbType.VarChar, tsid);         //推广号
            tools.AddSqlParameter("p_nickname", System.Data.SqlDbType.VarChar, nickname);     //昵称 (qq，sina的昵称)
            tools.AddSqlParameter("p_headpicurl", System.Data.SqlDbType.VarChar, figureurl);     //头像的url地址
            //tools.AddSqlParameter("p_check_only", System.Data.SqlDbType.TinyInt, "");   //0登录；1纯校验,不记日志和更新最够更新日期
            tools.AddSqlParameter("p_qq", System.Data.SqlDbType.VarChar, qq);   //QQ号(和openid一起进来的)
            tools.AddSqlParameter("p_OS", System.Data.SqlDbType.VarChar, os);   //操作系统的名称和版本 （移动设备用）
            tools.AddSqlParameter("p_DN", System.Data.SqlDbType.VarChar, dn);   //设备名称 （移动设备用）

            tools.AddSqlParameter("p_message", System.Data.SqlDbType.VarChar, 100, message, System.Data.ParameterDirection.Output);
            tools.AddSqlParameter("RETURN_VALUE", System.Data.SqlDbType.TinyInt, System.Data.ParameterDirection.ReturnValue);

            DataTable dtResult = SQLHelper.ExecuteGetTable(ConnectionManager.love_stock, System.Data.CommandType.StoredProcedure, "sp_user_login_by_passport", tools.GetSqlParameters());
            
            returnValue = Convert.ToInt32(GetStr(tools.GetSqlParameterByName("RETURN_VALUE").Value));
            message = GetStr(tools.GetSqlParameterByName("p_message").Value);

            if (returnValue == 0 || returnValue == 1)
            {
                if (dtResult != null && dtResult.Rows.Count > 0)
                {
                    //UserLoginByPassport userLoginByPassport = new UserLoginByPassport() { 
                    //    user_id = GetStr(dtResult.Rows[0]["user_id"])
                    //};

                    return GetStr(dtResult.Rows[0]["user_id"]);
                }
            }

            return string.Empty;
        }

        public string GetStr(object o)
        {
            if (o == DBNull.Value)
            {
                return null;
            }
            else
            {
                return o.ToString();
            }
        }
    }
}
